/********************************************************************************
 * Project Name		[JavaEE_Web]
 * File Name     	[JSP04.java]
 * Creation Date 	[2015-01-01]
 * 
 * Copyright© ge.y.yang@gmail.com All Rights Reserved
 * 
 * Work hard, play harder, think big and keep fit
 ********************************************************************************/
package _notes.jsp;

/**
 * JSP的标签
 * 
 * @author 不落的太阳(Sean Yang aka ShortPeace)
 * @version 1.0
 * @since jdk 1.8
 * 
 */
public final class JSP04 {

	public void jspAction() {
		/**
		 * JSP标签也称之为Jsp Action[JSP动作]元素<br/>
		 * 它用于在JSP页面中提供业务逻辑功能, 避免在JSP页面中直接编写Java代码, 造成jsp页面难以维护<br/>
		 */
	}

	public void jspInclude() {
		/**
		 * JSP标签<jsp:include/><br/>
		 * 
		 * <jsp:include>标签用于把其他资源的输出内容引入到当前JSP页面的输出内容之中, JSP引擎在JSP页面执行时的引入,
		 * 生成多个Servlet<br/>
		 * <jsp:include>标签引入被称为动态引入<br/>
		 * 
		 * <code>
		 * <jsp:include 
		 *     page="relativeURL|<%=expression%>"			[指定被引入资源的相对路径, 也可以通过执行一个表达式来获得]
		 *     flush="true|false"							[指定在插入其他资源的输出内容时, 是否先将当前JSP页面的已输出的内容刷新到客户端]
		 * />
		 * </code><br/>
		 */
	}

	public void jspForward() {
		/**
		 * JSP标签<jsp:forward/><br/>
		 * 
		 * 用于把请求转发给另外一个资源<br/>
		 * <code>
		 * <jsp:forward 
		 *     page="relativeURL|<%=expression%>"			[用于指定请求转发到的资源的相对路径, 也可以通过执行一个表达式来获得] 
		 * /> 
		 * </code><br/>
		 */
	}

	public void jspParam() {
		/**
		 * JSP标签<jsp:param><br/>
		 * 
		 * 用于在<jsp:forward>和<jsp:include>标签中传递参数<br/>
		 * 
		 * <code>
		 * <jsp:param 
		 *     name="paramName" 							[用于指定参数名, 新的页面可以使用request.getParameter(paramName)获得value]
		 *     value="paramValue|<%=expression%>" 			[用于指定参数值]
		 * />
		 * </code>
		 */
	}

	public void jspUseBean() {
		/**
		 * JSP标签<jsp:useBean><br/>
		 * 
		 * 该标签用于在某个指定的域范围[application|session|request|pageContext]
		 * 中查找一个指定名称的JavaBean对象, 如果存在则直接返回该JavaBean对象的引用,
		 * 如果不存在则实例化一个新的JavaBean对象并将它按指定的名称存储在指定的域范围中<br/>
		 * 
		 * <code>
		 * <jsp:useBean 
		 *     id="beanInstanceName" 
		 *     class="package.className" 
		 *     scope="page|request|session|application"
		 *     type="classType"
		 *     beanName="package.className"
		 * />
		 * </code><br/>
		 * 
		 * id属性: 用于指定JavaBean实例对象的引用名称和其存储在域范围中的名称<br/>
		 * class属性: 用于指定JavaBean的完整类名[即必须带有包名]<br/>
		 * scope属性: 用于指定JavaBean实例对象所存储的域范围, 其取值只能是上述四个值中的一个, 其默认值是page<br/>
		 * type属性: 用于指定JavaBean实例所属的类类型<br/>
		 * beanName属性: 用于指定JavaBean的完整名称<br/>
		 * 有了type属性和beanName属性则允许省略class属性<br/.
		 * 
		 * JavaBean<br/>
		 * 用作JavaBean的类必须具有一个公共的, 无参数的构造方法<br/>
		 * JavaBean的属性与普通Java类的属性的概念不一样, JavaBean的属性是以方法定义的形式出现的<br/>
		 * 用于对属性赋值的方法称为属性修改器或setter方法, 用于读取属性值的方法称为属性访问器或getter方法<br/>
		 * 属性修改器必须以小写的set前缀开始, 后跟属性名, 且属性名的第一个字母要改为大写<br/>
		 * 属性访问器通常以小写的get前缀开始, 后跟属性名, 且属性名的第一个字母要改为大写<br/>
		 * JavaBean的属性名是setter方法或getter方法中除去前缀set/get后的部分, 但属性名的首字母必须小写<br/>
		 * 
		 * 对于JSP页面来说, 只要一个类具有一个公共的无参数的构造方法, 就可以把这个类当作JavaBean来使用<br/>
		 */
	}

	public void jspSetProperty() {
		/**
		 * JSP标签<jsp:setProperty><br/>
		 * 
		 * 该标签用于设置JavaBean对象的属性, 也就是调用JavaBean对象的setter方法<br/>
		 * 
		 * <code>
		 * <jsp:setProperty 
		 *     name="beanInstanceName"  
		 *     property="propertyName" 
		 *     value="{string | <%= expression %>}" 
		 *     param="parameterName"
		 * />
		 * </code><br/>
		 * 
		 * name属性: 用于指定JavaBean实例对象的名称, 其值应与<jsp:useBean>标签的id属性值相同<br/>
		 * property属性: 用于指定JavaBean实例对象的属性名<br/>
		 * value属性: 用于指定JavaBean实例对象的某个属性的值, 其设置值可以是一个字符串, 也可以是一个表达式.
		 * 如果value属性的设置值是一个表达式, 那么该表达式的结果类型必须与所要设置的JavaBean属性的类型一致<br/>
		 * param属性用于将一个请求参数的值设置为JavaBean实例对象的某个属性值,
		 * 它可以将作为字符串类型返回的请求参数值自动转换成要设置的JavaBean属性的类型<br/>
		 * 
		 * 两种特殊的用法<br/>
		 * 方式1<br/>
		 * <code>
		 * <jsp:setProperty
		 *     name="beanInstanceName"
		 *     property="*"
		 * />
		 * </code><br/>
		 * 设置JavaBean属性的快捷方式<br/>
		 * JavaBean中的属性名必须和request对象中的参数名相匹配,
		 * JSP会把这些String类型的表单参数转化成JavBean属性对应的类型 <br/>
		 * property="*"表示所有名字和JavaBean属性名字匹配的请求参数都将被传递给相应的属性set方法<br/>
		 * 
		 * 方式2<br/>
		 * <code>
		 * <jsp:setProperty
		 *     name="beanInstanceName"
		 *     property="propertyName"
		 *     param="parameterName"
		 * /> 
		 * </code><br/>
		 * param属性和request参数的名字可以不同, 如果当前请求没有参数, 系统不会把null传递给Bean属性的set方法<br/>
		 * 因此, 可以让JavaBean自己提供默认属性值, 只有当请求参数明确指定了新值时才修改默认属性值<br/>
		 */
	}

	public void jspGetProperty() {
		/**
		 * JSP标签<jsp:getProperty><br/>
		 * 
		 * 该标签用于读取JavaBean对象的属性, 即调用JavaBean对象的getter方法,
		 * 然后将读取的属性值转换成字符串后插入进输出的响应正文中<br/>
		 * 
		 * <code>
		 * <jsp:getProperty 
		 *     name="beanInstanceName" 
		 *     property="PropertyName"
		 * />
		 * </code><br/>
		 * 
		 * name属性: 用于指定JavaBean实例对象的名称, 其值应与<jsp:useBean>标签的id属性值相同<br/>
		 * property属性: 用于指定JavaBean实例对象的属性名<br/>
		 * 如果一个JavaBean实例对象的某个属性值为null, 使用
		 * <jsp:getProperty>输出该属性的结果将是内容为"null"的字符串 <br/>
		 */
	}
}
